<script>
export default {
  onLaunch: function () {
    if (!uni.getStorageSync('token')) {
      uni.reLaunch({
        url: '/pages/login/index',
      });
    }
    console.log('App Launch');
    // #ifdef MP-WEIXIN
    this.updateManager();
    // #endif
    // 动态获取当前应用版本（避免硬编码）
    plus &&
      plus.runtime.getProperty(plus.runtime.appid, (info) => {
        const currentVersion = info.version; // 从 manifest.json 中读取的 versionName
        const storedVersion = uni.getStorageSync('appVersion');
        console.log(
          'currentVersion=' + currentVersion,
          'storedVersion=' + storedVersion
        );
        if (currentVersion !== storedVersion) {
          // uni.clearStorageSync(); // 不要清除存储
          this.clearCache(); // 执行清理缓存
          uni.setStorageSync('appVersion', currentVersion); // 更新本地存储版本号
        }
      });
  },
  onShow: function () {
    console.log('App Show');
  },
  onHide: function () {
    console.log('App Hide');
  },
  methods: {
    clearCache() {
      // 清理逻辑（参考方法一的实现）
      if (plus.os.name === 'Android') {
        let main = plus.android.runtimeMainActivity();
        let cacheDir = main.getCacheDir();
        let files = plus.android.invoke(cacheDir, 'listFiles');
        files.forEach((file) => {
          let filePath = '' + file;
          plus.io.resolveLocalFileSystemURL(filePath, (entry) => {
            if (entry.isDirectory) {
              entry.removeRecursively(); // 递归删除子目录
            } else {
              entry.remove();
            }
          });
        });
      } else {
        plus.cache.clear(); // iOS/H5 清理缓存
      }
    },
    updateManager() {
      const updateManager = uni.getUpdateManager(); // 小程序版本更新管理器
      updateManager.onCheckForUpdate((res) => {
        // 检测新版本后的回调
        if (res.hasUpdate) {
          // 如果有新版本提醒并进行强制升级
          uni.showModal({
            content: '新版本已经准备好，是否重启应用？',
            showCancel: false,
            confirmText: '确定',
            success: (res) => {
              if (res.confirm) {
                updateManager.onUpdateReady((res) => {
                  // 新版本下载完成的回调
                  updateManager.applyUpdate(); // 强制当前小程序应用上新版本并重启
                });

                updateManager.onUpdateFailed((res) => {
                  // 新版本下载失败的回调
                  // 新版本下载失败，提示用户删除后通过冷启动重新打开
                  uni.showModal({
                    content: '下载失败，请删除当前小程序后重新打开',
                    showCancel: false,
                    confirmText: '知道了',
                  });
                });
              }
            },
          });
        }
      });
    },
  },
};
</script>

<style>
/* #ifndef APP-PLUS-NVUE */
/* uni.css - 通用组件、模板样式库，可以当作一套ui库应用 */
@import './common/uni.css';

page {
  height: 100%;
  background-color: #f2f2f2;
  font-size: 28rpx;
}
/* page::before {
  content: '北京力控元通科技有限公司@15333019298';
  position: fixed;
  bottom: 10rpx;
  right: 20rpx;
  font-size: 12px;
  color: rgba(0, 0, 0, 0.5);
  font-style: italic;
  z-index: 999;
} */
/* #endif*/
</style>
